#ifndef __SHAPE_H__
#define __SHAPE_H__

#include "SDLDrawManager.h"




class Shape {

	private:
		char* id;

		int rColorFigura;
		int gColorFigura;
		int bColorFigura;

		int rColorLinea;
		int gColorLinea;
		int bColorLinea;

		char* idTextura;
		int lineThickness;
	    
	public:
		Shape(); // Constructor.
		virtual ~Shape(); // Destructor.

		// GET y SET para cada atributo.
		void setId(char* nuevoId);
		char* getId();
		
		virtual void draw(SDL_Surface* screen)=0;
		virtual void drawTexture(SDL_Surface *screen)=0;
        
		void setRColorFigura(int nuevoRColorFigura);
		int getRColorFigura();

		void setGColorFigura(int nuevoGColorFigura);
		int getGColorFigura();

		void setBColorFigura(int nuevoBColorFigura);
		int getBColorFigura();

		void setRColorLinea(int nuevoRColorLinea);
		int getRColorLinea();

		void setGColorLinea(int nuevoGColorLinea);
		int getGColorLinea();

		void setBColorLinea(int nuevoBColorLinea);
		int getBColorLinea();

		void setIdTextura(char* nuevoIdTextura);
		char* getIdTextura();

		void setLineThickness(int newLineThickness);
		int getLineThickness();


		virtual int serialize(Element* elem)=0;

		virtual void hydrate(Element* elem)=0;

		bool isInDisplay (Point* point1, Point* point2, Point* point3, Point* point4);




};



#endif __SHAPE_H__